package com.yunshan.wechat.service;

import com.yunshan.wechat.domain.UserInfoVo;
import com.yunshan.wechat.domain.WechatUserInfo;

import java.util.List;

/**
 * 小程序用户信息Service接口
 *
 * @author yunshan
 * @date 2025-02-07
 */
public interface IWechatUserInfoService
{
    /**
     * 查询小程序用户信息
     *
     * @param id 小程序用户信息主键
     * @return 小程序用户信息
     */
    public WechatUserInfo selectWechatUserInfoById(Long id);

    /**
     * 查询小程序用户信息列表
     *
     * @param wechatUserInfo 小程序用户信息
     * @return 小程序用户信息集合
     */
    public List<WechatUserInfo> selectWechatUserInfoList(WechatUserInfo wechatUserInfo);

    /**
     * 新增小程序用户信息
     *
     * @param wechatUserInfo 小程序用户信息
     * @return 结果
     */
    public int insertWechatUserInfo(WechatUserInfo wechatUserInfo);

    /**
     * 修改小程序用户信息
     *
     * @param wechatUserInfo 小程序用户信息
     * @return 结果
     */
    public int updateWechatUserInfo(WechatUserInfo wechatUserInfo);

    /**
     * 批量删除小程序用户信息
     *
     * @param ids 需要删除的小程序用户信息主键集合
     * @return 结果
     */
    public int deleteWechatUserInfoByIds(Long[] ids);

    /**
     * 删除小程序用户信息信息
     *
     * @param id 小程序用户信息主键
     * @return 结果
     */
    public int deleteWechatUserInfoById(Long id);

    /**
     * 查询小程序用户信息
     * @param openid openid
     * @param unionid unionId
     * @return 结果
     */
    WechatUserInfo selectWechatUserInfo(String openid, String unionid, String phone);

    /**
     * 通过openid查询小程序用户信息
     * @param openId openid
     * @return 结果
     */
    WechatUserInfo selectWechatUserInfoByOpenid(String openId);

    /**
     * 小程序端用户信息查询
     * @param userId userId
     * @return 结果
     */
    UserInfoVo selectUserInfoById(Long userId);

    /**
     * 小程序用户修改信息
     * @param userInfoVo 用户信息
     * @return 结果
     */
    int updateUniUserInfo(UserInfoVo userInfoVo);

    /**
     * 根据会员类型查询会员id
     * @param userId 用户id
     * @return 结果
     */
    Long selectMemberIdByUserId(Long userId);

    /**
     * 根据登录所用手机号查询微信用户
     * @param loginPhone 手机号
     * @return 结果
     */
    WechatUserInfo selectUserInfoByLoginPhone(String loginPhone);
}
